#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>

char*cmd1="cat";//相对路径
char*cmd2="/bin/cat";//绝对路径
char*argv1="/etc/passwd";
char*argv2="/etc/group";


void sig_hanler(int signo){

    if(signo==SIGCHLD){
        wait(0);
    }

}


int main(){
    if(SIG_ERR==signal(SIGCHLD,sig_hanler)){
        perror("signal");
        exit(1);
    }

    pid_t pid;
    if((pid=fork())<0){
        perror("fork");
        exit(1);
    }else if(pid==0){

        if(execl(cmd2,cmd1,argv2,NULL)<0){
            perror("execl");
            exit(1);
        }else{
            std::cout<<"execl success"<<std::endl;
        }


    }else{

        std::cout<<"main thread"<<std::endl;


    }



    return 0;
}





